<?php
//根据 yyyy 和 m 获取指定月份有哪几个周，每一周是哪7天（$range=7 表示显示一周的那7天；$range=2 表示显示一周的第1天和最后1天）
function get_week($yyyy=0, $m=0, $range=7){
	$yyyy = $yyyy ? $yyyy : date('Y');
	$m = $m ? $m : date('m');
	$month = $yyyy.'-'.$m;
	$weekinfo = [];
	//计算当前月有多少天
	$sum_date = date('d',strtotime($month.' +1 month -1 day'));
	//循环本月有多少周
	$key = 0;
	for($i=1; $i < $sum_date ; $i=$i+7){
		$key++;
		//计算第一天是周几
		$w = date('N',strtotime($month.'-'.$i));
		if($range == 7){
			//这一句是获取每周的那7天分别是哪一天
			$weekinfo[$key] = [
				date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-1).' days')),
				date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-2).' days')),
				date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-3).' days')),
				date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-4).' days')),
				date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-5).' days')),
				date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-6).' days')),
				date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-7).' days')),
			];
		}else{
			//这一句是获取每周的周一是哪一天，周日是哪一天
			$weekinfo[$key] = array(date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-1).' days')),date('Y-m-d',strtotime($month.'-'.$i.' +'.(7-$w).' days')));
		}
	}
	return $weekinfo;
}

//展示指定月份的每周日期范围
function generation($yyyy, $m){
	$arr = $ret = $ret1 = $ret2 = [];
	$a = 0;
	foreach (get_week($yyyy, $m, 2) as $k => $v){
		$arr[] = $v;
		$a++;
		$ret[$a]="第".$a."周： ".$v[0]." ~ ".$v[1];
		$ret1[$a]=$v[0];
		$ret2[$a]=$v[1];
	}
	$ret3=array($ret,$ret1,$ret2);
	return $ret3;
}

echo "<pre>";
print_r(get_week(2021, 10, 7));
// print_r(generation(2021, 10));
echo "</pre>";










?>